authentication aspect-oriented programming hyperj credit card internet security security credit visa encryption intentional programming card cards aop credit cards generative programming design patterns